// pages/profile/profile.js
import { TaskManager } from '../../utils/taskManager.js'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    loading: false,
    stats: {
      totalTasks: 0,
      completedTasks: 0,
      pendingTasks: 0,
      completionRate: 0,
      todayCreated: 0,
      weeklyCompleted: 0,
      weeklyAverage: 0,
      urgentTasks: 0,
      priorityDistribution: {
        high: { count: 0, percentage: 0 },
        medium: { count: 0, percentage: 0 },
        low: { count: 0, percentage: 0 }
      }
    },
    recentCompleted: [], // 最近完成的任务
    lastUpdateTime: '' // 最后更新时间
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    console.log('我的页面加载')
    this.loadStats()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.loadStats()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadStats()
    setTimeout(() => {
      wx.stopPullDownRefresh()
    }, 1000)
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: 'TodoList - 高效任务管理',
      path: '/pages/index/index'
    }
  },

  /**
   * 加载统计数据
   */
  loadStats() {
    this.setData({ loading: true })
    
    try {
      // 获取基础统计数据
      const basicStats = TaskManager.getTaskStats()
      
      // 获取扩展统计数据
      const extendedStats = this.calculateExtendedStats()
      
      // 获取最近完成的任务
      const recentCompleted = this.getRecentCompletedTasks()
      
      // 合并统计数据
      const stats = {
        ...basicStats,
        ...extendedStats
      }
      
      this.setData({
        stats: stats,
        recentCompleted: recentCompleted,
        lastUpdateTime: this.formatTime(Date.now()),
        loading: false
      })
      
      console.log('统计数据加载成功:', stats)
    } catch (error) {
      console.error('加载统计数据失败:', error)
      this.setData({ loading: false })
      wx.showToast({
        title: '加载失败',
        icon: 'error'
      })
    }
  },

  /**
   * 计算扩展统计数据
   */
  calculateExtendedStats() {
    const allTasks = TaskManager.getAllTasks()
    const now = Date.now()
    const todayStart = new Date(new Date().setHours(0, 0, 0, 0)).getTime()
    const weekStart = now - 7 * 24 * 60 * 60 * 1000
    
    // 今日创建的任务数
    const todayCreated = allTasks.filter(task => task.createTime >= todayStart).length
    
    // 本周完成的任务数
    const weeklyCompleted = allTasks.filter(task => 
      task.status === 1 && task.completeTime >= weekStart
    ).length
    
    // 每日平均完成数
    const weeklyAverage = Math.round(weeklyCompleted / 7 * 10) / 10
    
    // 紧急任务数（高优先级且未完成）
    const urgentTasks = allTasks.filter(task => 
      task.priority === 1 && task.status === 0
    ).length
    
    // 优先级分布（仅统计待完成任务）
    const pendingTasks = allTasks.filter(task => task.status === 0)
    const priorityDistribution = this.calculatePriorityDistribution(pendingTasks)
    
    return {
      todayCreated,
      weeklyCompleted,
      weeklyAverage,
      urgentTasks,
      priorityDistribution
    }
  },

  /**
   * 计算优先级分布
   */
  calculatePriorityDistribution(tasks) {
    const distribution = {
      high: { count: 0, percentage: 0 },
      medium: { count: 0, percentage: 0 },
      low: { count: 0, percentage: 0 }
    }
    
    if (tasks.length === 0) {
      return distribution
    }
    
    tasks.forEach(task => {
      switch (task.priority) {
        case 1:
          distribution.high.count++
          break
        case 2:
          distribution.medium.count++
          break
        case 3:
          distribution.low.count++
          break
      }
    })
    
    // 计算百分比
    distribution.high.percentage = Math.round((distribution.high.count / tasks.length) * 100)
    distribution.medium.percentage = Math.round((distribution.medium.count / tasks.length) * 100)
    distribution.low.percentage = Math.round((distribution.low.count / tasks.length) * 100)
    
    return distribution
  },

  /**
   * 获取最近完成的任务
   */
  getRecentCompletedTasks() {
    const allTasks = TaskManager.getAllTasks()
    const completedTasks = allTasks
      .filter(task => task.status === 1)
      .sort((a, b) => b.completeTime - a.completeTime)
      .slice(0, 5)
    
    return completedTasks.map(task => ({
      ...task,
      formattedCompleteTime: this.formatTime(task.completeTime),
      priorityInfo: this.getPriorityInfo(task.priority)
    }))
  },

  /**
   * 获取优先级信息
   */
  getPriorityInfo(priority) {
    const priorityMap = {
      1: { text: '高', color: '#ff4757' },
      2: { text: '中', color: '#ffa502' },
      3: { text: '低', color: '#2ed573' }
    }
    return priorityMap[priority] || priorityMap[2]
  },

  /**
   * 格式化时间
   */
  formatTime(timestamp) {
    const date = new Date(timestamp)
    const now = new Date()
    const diff = now - date
    
    if (diff < 60000) { // 1分钟内
      return '刚刚'
    } else if (diff < 3600000) { // 1小时内
      return Math.floor(diff / 60000) + '分钟前'
    } else if (diff < 86400000) { // 1天内
      return Math.floor(diff / 3600000) + '小时前'
    } else if (diff < 2592000000) { // 30天内
      return Math.floor(diff / 86400000) + '天前'
    } else {
      return date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate()
    }
  },

  /**
   * 查看已完成任务
   */
  viewCompletedTasks() {
    wx.navigateTo({
      url: '/pages/completed/completed'
    })
  },

  /**
   * 查看任务历史
   */
  viewTaskHistory() {
    wx.navigateTo({
      url: '/pages/history/history'
    })
  },

  /**
   * 查看数据分析
   */
  viewTaskAnalytics() {
    wx.navigateTo({
      url: '/pages/analytics/analytics'
    })
  },

  /**
   * 数据管理
   */
  manageData() {
    wx.showActionSheet({
      itemList: ['导出数据', '重置示例数据', '清空所有数据'],
      success: (res) => {
        switch (res.tapIndex) {
          case 0:
            this.exportData()
            break
          case 1:
            this.resetSampleData()
            break
          case 2:
            this.clearAllData()
            break
        }
      }
    })
  },

  /**
   * 导出数据
   */
  exportData() {
    try {
      const allTasks = TaskManager.getAllTasks()
      const stats = this.data.stats
      
      const exportData = {
        tasks: allTasks,
        statistics: stats,
        exportTime: new Date().toISOString(),
        version: '1.0.0'
      }
      
      // 将数据转换为JSON字符串
      const jsonString = JSON.stringify(exportData, null, 2)
      
      // 显示导出数据
      wx.showModal({
        title: '数据导出',
        content: `导出 ${allTasks.length} 个任务数据，请复制保存`,
        showCancel: true,
        confirmText: '查看数据',
        success: (res) => {
          if (res.confirm) {
            // 这里可以跳转到数据展示页面
            wx.showToast({
              title: '数据导出成功',
              icon: 'success'
            })
          }
        }
      })
    } catch (error) {
      console.error('导出数据失败:', error)
      wx.showToast({
        title: '导出失败',
        icon: 'error'
      })
    }
  },

  /**
   * 显示设置
   */
  showSettings() {
    wx.showActionSheet({
      itemList: ['应用设置', '关于应用', '意见反馈'],
      success: (res) => {
        switch (res.tapIndex) {
          case 0:
            this.showAppSettings()
            break
          case 1:
            this.showAppInfo()
            break
          case 2:
            this.showFeedback()
            break
        }
      }
    })
  },

  /**
   * 应用设置
   */
  showAppSettings() {
    wx.showModal({
      title: '应用设置',
      content: '设置功能开发中，敬请期待',
      showCancel: false
    })
  },

  /**
   * 关于应用
   */
  showAppInfo() {
    wx.showModal({
      title: '关于TodoList',
      content: 'TodoList v1.0.0\n\n一个简洁高效的任务管理工具\n\n• 本地数据存储\n• 优先级管理\n• 统计分析\n• 简洁易用',
      showCancel: false,
      confirmText: '知道了'
    })
  },

  /**
   * 意见反馈
   */
  showFeedback() {
    wx.showModal({
      title: '意见反馈',
      content: '如有问题或建议，请通过以下方式联系我们：\n\n• 微信群：TodoList用户群\n• 邮箱：feedback@todolist.com',
      showCancel: false,
      confirmText: '知道了'
    })
  },

  /**
   * 重置示例数据
   */
  resetSampleData() {
    wx.showModal({
      title: '重置数据',
      content: '确定要重置为示例数据吗？当前数据将被清空！',
      confirmText: '重置',
      confirmColor: '#ff4757',
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({ title: '重置中...' })
          
          // 清空所有任务
          TaskManager.clearAllTasks()
          
          // 初始化示例数据
          const result = TaskManager.initSampleData()
          wx.hideLoading()
          
          if (result.success) {
            wx.showToast({
              title: '数据重置成功',
              icon: 'success'
            })
            
            // 重新加载统计数据
            this.loadStats()
          } else {
            wx.showToast({
              title: '数据重置失败',
              icon: 'error'
            })
          }
        }
      }
    })
  },

  /**
   * 清空所有数据
   */
  clearAllData() {
    wx.showModal({
      title: '清空数据',
      content: '确定要清空所有数据吗？此操作不可恢复！',
      confirmText: '清空',
      confirmColor: '#ff4757',
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({ title: '清空中...' })
          
          const result = TaskManager.clearAllTasks()
          wx.hideLoading()
          
          if (result.success) {
            wx.showToast({
              title: '数据清空成功',
              icon: 'success'
            })
            
            // 重新加载统计数据
            this.loadStats()
          } else {
            wx.showToast({
              title: '数据清空失败',
              icon: 'error'
            })
          }
        }
      }
    })
  }
}) 